﻿using Microsoft.Data.SqlClient;
using Microsoft.Extensions.Configuration;
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Carlife.Inf
{
    public class DapperHelper
    {
        IDbConnection _db;
        string _type;
        IConfiguration configuration;
#pragma warning disable CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
        public DapperHelper(IConfiguration config)
#pragma warning restore CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
        {
            this.configuration = config;
            _type = config.GetSection("DatebasecConfig:DbType").Value;
            if (string.IsNullOrEmpty(_type))
            {
                throw new Exception("数据库类型未配置");
            }
        }
        public IDbConnection GetDbConnection()
        {
            if (_db != null)
            {
                return _db;
            }


            string conn =  configuration.GetSection("DatebasecConfig:SqlServerConnectionString").Value;
            if (string.IsNullOrEmpty(conn))
            {
                throw new Exception("数据库连接未配置");
            }
            switch (_type.ToLower())
            {
                case "sql":
                    _db = new SqlConnection(conn);
                    break;
                case "mysql":
                    conn = configuration.GetSection("DatebasecConfig:MySqlConnectionString").Value;
                    if (string.IsNullOrEmpty(conn))
                    {
                        throw new Exception("未配置mySql的数据库连接");
                    }
                    _db = new MySqlConnection(conn);
                    break;
                default:
                    _db = new SqlConnection(conn);
                    break;
            }
            return _db;
        }
    }
}
